package com.jprocms.module.cms.es.service;


import com.jpro.framework.common.pojo.PageParam;
import com.jpro.framework.common.pojo.PageResult;
import com.jprocms.module.cms.controller.admin.content.vo.ContentIndexRecordDto;
import com.jprocms.module.cms.es.dto.*;
import com.jprocms.module.cms.es.vo.ContentIndexPageVO;
import com.jprocms.module.cms.es.vo.EsContentVO;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * @author jprocms
 */
public interface ContentEsService {


    /**
     * 根据扩展自定义字段查询
     *
     * @param customFields
     * @return
     * @throws IOException
     */
    List<EsContentVO> queryByCustomFields(Map<String, Object> customFields) throws IOException;

    /**
     * 管理后台内容管理 es查询
     *
     * @param queryDto
     * @return
     * @throws IOException
     */
    PageResult<ContentIndexRecordDto> getContentPageAmin(ContentAdminQueryDto queryDto) throws IOException;

    /**
     * 更新内容到es
     *
     * @param entity
     * @throws IOException
     */
    void update(ContentEsDto entity) throws IOException;

    /**
     * 获取相关内容
     *
     * @param dto
     * @return
     * @throws IOException
     */
    List<EsContentVO> getContentRelation(EsRelationContentQueryDto dto) throws IOException;

    /**
     * 获取上下篇
     *
     * @param dto
     * @return
     * @throws IOException
     */
    EsContentVO getContentNext(EsNextContentDto dto) throws IOException;

    /**
     * 前台搜索页搜索
     *
     * @param dto
     * @return
     * @throws IOException
     */
    PageResult<EsContentVO> getContentPageForFront(EsFrontSearchDto dto) throws IOException;

    void resetContentIndex(ContentIndexResetDto dto);

    /**
     * 管理后台搜索内容来自es中的数据
     *
     * @param dto
     * @param pageable
     * @return
     * @throws IOException
     */
    PageResult<ContentIndexPageVO> getContentPageFromEs(ContentSearchQueryDto dto, PageParam pageable) throws IOException;

    String getDocText(String url);
}
